import pandas as pd  # 导入pandas库，用于数据处理和分析
import matplotlib.pyplot as plt  # 导入matplotlib.pyplot模块，用于绘制图表

# 设置中文字体显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体，以支持中文字符的正确显示
plt.rcParams['axes.unicode_minus'] = False  # 解决坐标轴上负号显示的问题，确保负号正常显示

# 读取Excel文件
file_path = 'jobs.xlsx'  # 定义Excel文件的路径，确保文件路径正确且文件存在
df = pd.read_excel(file_path)  # 使用pandas的read_excel函数读取Excel文件，将数据加载到DataFrame对象df中

# 提取薪资信息
salaries = df['salaryMin'].dropna().tolist()  # 从DataFrame中提取'salaryMin'列的数据，使用dropna()方法去除缺失值（如NaN），然后使用tolist()方法将数据转换为列表格式

# 绘制直方图
plt.figure(figsize=(10, 6))  # 创建一个大小为10x6英寸的新图形窗口，指定图表的初始尺寸
plt.hist(salaries, bins=10, edgecolor='k', alpha=0.7)  # 绘制直方图，将薪资数据分为10个区间（bins=10），设置柱状图边缘颜色为黑色（edgecolor='k'），设置柱状图的透明度为0.7（alpha=0.7）
plt.title('Python工程师薪资分布', fontsize=16)  # 设置图表的标题为'Python工程师薪资分布'，并指定字体大小为16
plt.xlabel('薪资 (元)')  # 设置X轴的标签为'薪资 (元)'
plt.ylabel('频数')  # 设置Y轴的标签为'频数'
plt.grid(axis='y', alpha=0.75)  # 在图表上添加网格线，仅在Y轴上显示（axis='y'），设置网格线的透明度为0.75（alpha=0.75）

# 保存并显示图表
plt.savefig('salary_distribution.png')  # 将绘制好的图表保存为图像文件，文件名为'salary_distribution.png'
plt.show()  # 在屏幕上显示图表，以便用户查看